Intelligent content stream bandwidth determination

ABSTRACT

A system and method for delivering content objects over the Internet to an end user system with a content delivery network (CDN) is disclosed that allows for intelligent bandwidth determination for content streams. A content object is delivered with the CDN using the Internet. When a content object is requested by an end user media player, characteristics of the access network, the content object and/or the CDN are used to choose an suitable algorithm. The algorithm then determines a bitrate for delivery of the content object to the end user media player. Ultimately, the content object is transmitted at the bitrate to the end user media player.

This application is a continuation of U.S. patent application Ser. No.13/564,486 filed on Aug. 1, 2012, which is a continuation of U.S.application Ser. No. 12/563,660 filed Sep. 21, 2009, which claims thebenefit of U.S. Provisional Application No. 61/098,521 filed on Sep. 19,2008. Each of these references is hereby incorporated by reference inits entirety for all purposes,

BACKGROUND

This disclosure relates in general to streamed content delivery and, butnot by sway of limitation, to choosing a bitrate for the streamedcontent delivery.

Streamed delivery of video is becoming more and more popular, There aremany problems with streamed delivery over the Internet, for example,choosing a bitrate to supply the stream with. Any of content originator,Internet, any content delivery network (CDN), or the end user Internetservice provider (TSP) may introduce a bottleneck that affects thebitrate to choose. Conventionally, a streaming device, applet orapplication video player will test the connection from the end usersystem perspective to choose from a number of possible bitrates fordelivering a content object.

A particular video player has a fixed algorithm to determine thepreferred bitrate, The only knowledge that is used for these algorithmsis how the test works of the connection with the Internet. Any change tothe connection with the Internet results in a new test of the connectionand possible selection of a different bitrate. Further, some playersretest the connection after fast forwarding or rewinding. With testingtaking a number of seconds, the user experience is greatly affected.This is especially true for users that expect streaming media to worklike cable or satellite television, which does not require testing ofthe connection.

SUMMARY

In one embodiment, the present disclosure provides systems and methodsfor aiding delivery at a number of different possible bitrates with acontent delivery network (CDN) is disclosed that allows for intelligentbandwidth determination for content streams. A content object isdelivered with the CDN using the Internet. When a content object isrequested by an end user media player, characteristics of the accessnetwork, the content object and/or the CDN are used to choose ansuitable algorithm. The algorithm then determines a bitrate for deliveryof the content object to the end user media player. Ultimately, thecontent object is transmitted at the bitrate to the end user mediaplayer.

In another embodiment, the present disclosure provides a contentdelivery network (CDN) for delivering content over the Internet to anend user system where a bitrate to supply a content object to the enduser system is variable. The CON comprises a processor and a memorycoupled with the processor. The processor is configured to: receiving arequest to deliver the content object toward an end user system; causeretrieving information, where the information allows determining:characteristics of an access network that couples the end user system tothe Internet, characteristics of the content object, and/orcharacteristics of the CDN; cause choosing an algorithm from a pluralityof algorithms based, at least in part, on the information; causedetermining the bitrate using the algorithm; and cause passing at leastpart of the content object to with end user system at the bitrate.

In yet another embodiment, the present disclosure provides a method fordelivering content over the Internet to an end user system with acontent delivery network (CDN) where a bitrate to supply a contentobject to the end user system is variable. At least a part of thecontent object is stored. The content object is delivered with theInternet from the CDN A request to deliver the content object toward anend user system is received. Information is retrieved that allowsdetermining: characteristics of an access network that couples the enduser system to the Internet, characteristics of the content object,and/or characteristics of the CDN. An algorithm is chosen from aplurality of algorithms based, at least in part, on the information. Adetermination of the bitrate chosen using the algorithm is received. Atleast part of the content object is transmitted to the end user systemat the bitrate.

In still another embodiment, the present disclosure provides a methodfor delivering content over the Internet to an end user system with acontent provider that supports a plurality of bitrates to supply acontent object to the end user system. Information is retrieved thatallows determining: characteristics of an access network that couplesthe end user system to the Internet, characteristics of the contentobject, and/or characteristics of the CDN. An algorithm is chosen from aplurality of algorithms based, at least in part, on the information. Thebitrate is determined using the algorithm. Passing at least part of thecontent object with the end user system at the bitrate, where thecontent object is delivered with the Internet.

Further areas of applicability of the present disclosure will becomeapparent from the detailed description provided hereinafter. It shouldbe understood that the detailed description and specific examples, whileindicating various embodiments, are intended for purposes ofillustration only and are not intended to necessarily limit the scope ofthe disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is described in conjunction with the appendedfigures:

FIG. 1 depicts a block diagram of an embodiment of a contentdistribution system; and

FIG. 2 depicts a block diagram of an embodiment of the contentdistribution system with additional detail for a content originator, acontent delivery network (CDN) and a end user system;

FIG. 3 illustrates a flowchart of an embodiment of a process fordelivering content over the Internet to the end user system with theCDN; and

FIGS. 4, 5 and 6 illustrate flowcharts of embodiments of a process fordetermining a bitrate for downloading a content object.

In the appended figures, similar components and/or features may have thesame reference label. Further, various components of the same type maybe distinguished by following the reference label by a dash and a secondlabel that distinguishes among the similar components. If only the firstreference label is used in the specification, the description isapplicable to any one of the similar components having the same firstreference label irrespective of the second reference label.

DETAILED DESCRIPTION

The ensuing description provides preferred exemplary embodiment(s) only,and is net intended to limit the scope, applicability or configurationof the disclosure. Rather, the ensuing description of the preferredexemplary embodiment(s) will provide those skilled in the art with anenabling description for implementing a preferred exemplary embodimentof the disclosure, It should be understood that various changes may bemade in the function and arrangement of elements without departing fromthe spirit and scope of the invention as set forth in the appendedclaims.

Referring first to FIG. 1, a block diagram of an embodiment of a contentdistribution system 100 is shown where content originator 106 offloadsthe delivery of the content objects to a content delivery network (CDN)110. In this embodiment, the content distribution system 100 candetermine a bitrate, by choosing a suitable algorithm, to supply thecontent objects to an end user system 102. The content originator 106produces and/or distributes a content object. A content object is anycontent file or content stream and could include, for example, video,pictures, data, audio, software, and/or text. The content object couldbe live, delayed or stored. Throughout the specification, references maybe made to a content object, content stream and/or content file, but itinto be understood that those terms could be used interchangeablywherever they may appear.

Each end user system 102 is associated with an Internet service provider(ISP), not shown in this figure, through an access network. When acontent object is requested by an end user 108 through the end usersystem 102, characteristics of the access network, the content objectand/or the CDN 110 are used to choose a suitable algorithm. Thealgorithm determines a bitrate to supply the requested content object tothe end user system 102. Many algorithms are known to those of ordinaryskill in the art. This embodiment intelligently selects an algorithmfrom many different algorithms that determines the bandwidth availableto the end user systems 102 for delivery of the content over theInternet 104 with adequate quality of service (QoS). Various factors mayaffect the bandwidth available to an end user system 102. Examples ofthose factors may include access networks characteristics, activity ofthe CDN servers, congestion between the CDN and the end user system,simultaneous requests for particular content objects, time of the day,day of the week and month of the year.

Once the bandwidth available to the end user 108 is determined, thecontent object is transmitted at the determined bitrate to the end usersystem 102. The CDN may have several versions of the content objectavailable to send in the alternative according to the bandwidthavailable or could transcode the content object for each particular endusersystem 101 The end user system 102 receives the content object andprocesses it for the end user 108. The end user system 102 could be apersonal computer, media player, handheld Computer, Internet appliance,phone, IPTV set top box, streaming radio or any other device that canreceive and play content objects. In some embodiments, a number of theend user system 102 could be networked together.

Referring next to FIG, 2, a block diagram of an embodiment of thecontent distribution system 200 is shown with additional detail for thecontent originator 106, the CDN 110, and the end user system 102. Thecontent originator 106 may include a content provider 208, a contentsite 216 and an origin server 212. The CDN 110 may include a. userrequest/delivery interface 232, CDN servers 234, an information database220, and a content database 224. The end user system 102 may include a.run time application environment 228 with an integrated content player230 and a CDN plug-in 226. Although this figure only shows a singlecontent originator 106, a single end user system 102 and a single CDN110, it is to be understood that there could be many of each in variousembodiments.

Many content providers 208 use the CDN 110 to deliver the contentobjects over the Internet 104 to the end users 108. When a contentobject is requested by an end user 108. the CDN 110 may retrieve thecontent object from the content provider 208 should it not be readilyavailable within the CDN 110 already. Alternatively, the contentprovider 208 may directly provide the content object to the CDN 110,i.e., in advance of the first request. In this embodiment, the contentobjects are provided to the CDN 110 and stored in one or more CDNservers 234 such that requests may be served from the CDN 110. Theorigin server 212 holds a copy of each content object for the contentoriginator 106. Periodically, the contents of the origin server 212 maybe reconciled with the CDNs 110 through a cache and/or pre- populationalgorithm. A content database 224 stores information to indicate thecontent objects available within the CDN 110. Embodiments could havemany content databases 224 for each server, cluster of servers, POP, orregion.

When an end user 108 requests a content object through an end usersystem 102, the Content player 230 and/or the CDN plug-in 226 passes therequest either directly or indirectly via the Internet 104 to thecontent originator 106. The content originator 106 is the source orre-distributor of content objects. The content site 216 is an Internetsite accessible by the end user system 102. In one embodiment, thecontent site 216 could be a web site Where the content is viewable witha web browser. In other embodiments, the content site 216 could beaccessible with application software other than a web browser. Thecontent provider 208 can redirect content requests to any CDN 110 afterthey are made or can formulate the delivery path When the web page isformulated. In any event, the request for content is handed over to theCDN 110 in this embodiment.

An information database 220 stores information that is relevant to thecharacteristics of the access network, the content objects, and/or theCDN 110. When a request for content is received, the access networkinformation from the information database 220, is used to choose fromseveral algorithms that determine the bandwidth available to the enduser system 102. Choosing of the algorithm can be performed in the CDN110, the end user system 102, the content provider 208 or elsewhere onthe Internet in various embodiments. The CDN plug-in 226 gathers the IPaddress or other characteristics of the end user system 102 via the erun time application environment 228. When this information is notavailable, the CDN-plug-in 226 may use other information, for example,the content object characteristics and/or the CDN characteristics in theinformation database 120.

To determine the bandwidth available to the requested end user system102, the CDN plug-in 226 first chooses an algorithm based on informationretrieved from the information database 220. Once the algorithm ischosen, the runtime application environment 228 performs the chosenalgorithm to simulate or test a content download according to thealgorithm. This allows determining an adequate bitrate at which thecontent object may be served under current conditions. By selection ofthe algorithm that best suits current conditions to begin with, anadequate bit rate can be found quickly in one embodiment. As will bedescribed further below in various embodiments, the bitratedetermination may be performed by various algorithms. The CDN 110 thentransmits the requested content at the bitrate, to the end user system102. The information data base 220 is periodically updated by theruntime application environment 228 and historical trends can be storedand used for future determinations.

Each end user system 102 is associated with an Internet service provider(IST), which is not shown in this embodiment. Each ISP provides Internetconnectivity to one or more end users 108 at different speed leveldepending on each end user's subscription level, In addition to the enduser subscription level, the bandwidth available to an end user system102 may vary depending on other factors such as activity of the originand/or CDN servers, network traffic congestion anywhere along thedelivery chain, IP address space, requested content objects, time of theday, day of the week and month of the year, correlation to specialevents. Table I shows an example of access network bandwidth offered byvarious ISP at different subscription levels. Table I also shows how theaccess network bandwidth may vary on average according to the timefactor. The granularity of this information could be much greater insome embodiments. For example, typical results for a particular IPaddress could be tracked over time to provide much more accurateestimations of the bandwidth likely available.

TABLE I Example of Access Network Bandwidth offered by various ISPsInternet Access Access Network Bandwidth Service Pro- Network as afunctionn of Time viders (ISPs) Bandwidth Business Hours After BusinessHours ACME ISP 768 Kb/s 500 < BW < 768 650 < BW < 768 1.5 Mb/s 0.8 < BW< 1.5  1 < BW < 1.5 3 Mb/s 1.5 < BW < 3  2 < BW < 3 6 Mb/s 3 < BW < 64.5 < BW < 6  Atlas ISP 768 Kb/s 500 < BW < 768 650 < BW < 768 3 Mb/s1.5 < BW < 3  2 < BW < 3 6 Mb/s 3 < BW < 6 4.5 < BW < 6  9 Mb/s 6 < BW <9 7.5 < BW < 9  Speeedy ISP 1.5 Mb/s 0.8 < BW < 1.5  1 < BW < 1.5 6 Mb/s3 < BW < 6 4.5 < BW < 6  12 Mb/s  6 < BW < 12  9 < BW < 12 20 Mb/s 12 <BW < 20 15 < BW < 20

Referring next to FIG. 3, an embodiment of a process 300 for deliveringcontent over the Internet 104 to an end user system with a CDN 110 isshown. The depicted portion of the process begins in block 302 where theCDN 110 stores content on the CDN servers 234 and updates the contentdatabase 224. After receiving a user request to deliver content to anend user system 102 at block 304, processing continues to block 306where the CDN plug- in 226 retrieves information relevant to the accessnetwork, the requested content object, and/or the CDN from theinformation database 220.

The CDN plug-in 226 then chooses an algorithm in block 308 based, atleast in part, on the retrieved information at block 306. Someembodiments may have the CDN choose the algorithm and relay thatselection to the content player 230. Several different algorithms may bechosen from in this embodiment. The algorithm quickly determines anadequate bitrate at which the content may be delivered to an end usersystem 102 with little or no loss. In one embodiment, the chosenalgorithm may start downloading the content at a low bitrate andgradually increase the bitrate. In an alternative embodiment, the chosenalgorithm may start downloading the content at a high bitrate andgradually decrease the bitrate. Other embodiments may use a mid-levelbitrate as their starting point and download the content at themid-level bitrate or move up or down from that point. The content player230 increases or decreases the bandwidth through communication with therun time application environment 228 to implement the variousalgorithms.

The run time application environment 228, the content player 230 and theCDN plug-in 226 are used at block 310 to determine a bitrate fordelivering the content. In this embodiment, the bitrate is determined byperforming the chosen algorithm to simulate a content download. Once thebitrate is determined, processing continues to block 312 where the CDN110 transmits the requested content to the end user system 102.

Although not shown in the figure, conditions of the network may Change,A new bitrate determination can be made at any time as those conditionschange. For example, where a bitrate is causing packet loss or othererrors, the process of finding a new bitrate can begin again in themanner described herein.

With reference to FIG, 4, a flow diagram of an embodiment of process310-1 for determining a bitrate for downloading a content object isshown. Content objects are typically precoded at a number of differentbitrates or can be transcoded in real time according to any number ofdifferent fixed and variable bitrates. The depicted portion of theprocess begins in block 402 where the algorithm determines a low bitrateas a starting point. Once the starting point is determined, processingcontinues to block 404 where the content download simulation starts atthe chosen bitrate.

A determination is made, at block 406 as to whether a packet loss orlatency error has been detected. If a packet loss or latency error isdetected, processing flows from block 406 to block 410 where the bitrateis lowered to avoid the error. The processing then goes back to block404 for performing the simulation at the new bitrate, If there is nopacket loss or other error, processing goes from block 406 to block 408where another determination is made as to whether the processing reachedits maximum bitrate.

If the maximum bitrate is reached, processing flows from block 408 toblock 414 where the runtime application environment 228 uses the maximumbitrate to perform the Content download with an appropriate backoff. Ifthe maximum bitrate is not reached in block 408, processing goes toblock 412 where the runtime application environment 228 increases thebitrate. The processing then goes back to block 404 for performing thecontent download simulation at the new bitrate,

Referring next to FIG. 5, a flow diagram of another embodiment of aprocess 310-2 for determining a bitrate is shown. This embodimentdiffers from that of FIG. 4 in that at block 502 the algorithm starts ata high bitrate initially. In addition, at block 508, a determination ismade as to whether the processing reached its minimum bitrate. If theminimum bitrate is reached, the processing flows from block 508 to block514 where the runtime application environment 228 uses the minimumbitrate to simulate the content download with an appropriate backoff. Ifthe minimum bitrate is not reached, processing goes from block 508 toblock 512 where the runtime application environment 228 decreases thebitrate. The processing then goes back to block 504 for performing thedownload simulation at the new bitrate.

With reference to FIG. 6, a flow diagram of yet another embodiment of aprocess 310-3 for determining a bitrate is shown. The depicted portionof the process begins in step 602 where the algorithm determines amid-level bitrate as its starting point. Analysis of the informationdatabase allows a better estimation of a mid-level starting point. Inthis embodiment, the download simulation is performed at a fixed bitratein block 604. A determination is made, at block 606 as to whether apacket loss or latency error has been detected. If no packet loss orother errors are detected, processing goes from block 606 to block 610for using the current bitrate. If a packet loss or latency error isdetected, processing flows from block 606 to block 608 where the bitrateis lowered to avoid error. The processing then goes back to block 604for starting the content download simulation at the new bitrate. Thisprocess continues until an acceptable bitrate is chosen.

Various embodiments are discussed above giving examples of theinvention. Other alternatives are possible, for example, there need notbe a run time environment. Set top boxes and media players can implementthis functionality in compiled applications or state machines. Thevarious algorithms can be chosen from and the bandwidth determined inthe same way using compiled applications on the end user system.

While the principles of the disclosure have been described above inconnection with specific apparatuses and methods, it is to be clearlyunderstood that this description is made only by way of example and notas limitation on the scope of the invention.

1. (canceled)
 2. A content delivery network (CDN) for delivering contentover the Internet to an end user system, the CDN comprising: a memorythat stores a plurality of algorithms for optimizing a delivery bitrateto supply a content object to one or more end user systems; acommunication interface for receiving user requests from the one or moreend user systems, and delivering requested content objects in responsethereto, and a processor that is operatively coupled with the memory,and is configured to: receive a request, through the communicationinterface, from one of the one or more end user systems for a contentobject; determine an algorithm from the plurality of algorithms foroptimizing a delivery bitrate of the content object to the end usersystem, wherein: a delivery bitrate to supply a content object to theone of the one or more end user systems is variable, and the algorithmfor optimizing the delivery bitrate is determined based at least in parton information characterizing the end user system; optimize the deliverybitrate using the algorithm; and deliver at least part of the contentobject, through the communication interface, to the one of the one ormore end user systems at the delivery bitrate.
 3. The CDN for deliveringcontent over the Internet to the end user system as recited in claim 2,wherein the CDN is private, providing content only from a single contentoriginator to the communication interface for delivery to the one ormore end user systems.
 4. The CDN for delivering content over theInternet to the end user system as recited in claim 2, wherein theprocessor is distributed through a plurality of servers across the CDN.5. The CDN for delivering content over the Internet to the end usersystem as recited in claim 2, wherein the algorithm is also chosenbased, at least in part, on information indicating a characteristic ofan access network that couples the one of the one or more end usersystems to the Internet, and/or a characteristic of the CDN.
 6. The CDNfor delivering content over the Internet to the end user system asrecited in claim 2, wherein the plurality of algorithms includes analgorithm that gradually increases a bitrate during a download.
 7. TheCDN for delivering content over the Internet to the end user system asrecited in claim 2, wherein the plurality of algorithms includes analgorithm that gradually decreases a bitrate during a download.
 8. TheCDN for delivering content over the Internet to the end user system asrecited in claim 2, wherein the content object is available encoded in aplurality of different bitrates, and the algorithm selects the deliverybitrate as one of the plurality of bitrates.
 9. A method of utilizing acontent delivery network (CDN) to deliver content over the Internet toone or more end user systems, comprising: storing a plurality ofalgorithms in computer-readable media of the CDN for optimizing adelivery bitrate to supply a content object to one or more of the enduser systems; receiving a user request, through a communicationinterface of the CDN, from one of the one or more end user systems;determining, with a processor of the CDN, an algorithm from theplurality of algorithms for optimizing a delivery bitrate of the contentobject to the one of the one or more end user systems, wherein: adelivery bitrate used in delivering a content object to the one of theone or more end user systems is variable, and the algorithm foroptimizing the delivery bitrate is determined based at least in part oninformation characterizing the one of the one or more end user systems;optimizing the delivery bitrate using the algorithm; and delivering atleast part of the content object, through the communication interface ofthe CDN, to the one of the one or more end user systems at the deliverybitrate.
 10. The method of utilizing a CDN to deliver content over theInternet to one or more end user systems as recited in claim 9, whereinthe algorithm is also determined based at least in part on: informationindicating a characteristic of an access network that couples the one ofthe one or more end user systems to the Internet, and/or acharacteristic of the CDN.
 11. The method of utilizing a CDN to delivercontent over the Internet to one or more end user systems as recited inclaim 9, wherein the content object is retrieved within the CDN.
 12. Themethod of utilizing a CDN to deliver content over the Internet to one ormore end user systems as recited in claim 9, wherein the algorithmgradually increases the delivery bitrate during a download.
 13. Themethod of utilizing a CDN to deliver content over the Internet to one ormore end user systems as recited in claim 9, wherein the algorithmgradually decreases the delivery bitrate during a download.
 14. Themethod of utilizing a CDN to deliver content over the Internet to one ormore end user systems as recited in claim 9, wherein: the content objectis available encoded in a plurality of different bitrates, and thealgorithm selects the delivery bitrate as one of the plurality ofbitrates.
 15. The method of utilizing a CDN to deliver content over theInternet to one or more end user systems as recited in claim 9, whereinthe content object comprises a video file or stream.
 16. The method ofutilizing a CDN to deliver content over the Internet to one or more enduser systems as recited in claim 9, wherein the one of the one or moreend user systems is a set top box.
 17. A content origination system thatsupplies content over the Internet to an end user system where adelivery bitrate to supply a content object to the end user system isvariable, the content origination system storing a copy of each of aplurality of content objects, and comprising: a content provider devicethat formulates a delivery path of a content object to the end usersystem, the content provider device being configured to: receive a firstrequest from a first end user system for the content object; choose afirst algorithm from a plurality of algorithms for optimizing a firstdelivery bitrate of the content object to the first end user system,based at least in part on information characterizing the first end usersystem; optimize the first delivery bitrate using the first algorithm;deliver at least part of the content object to the first end user systemat the first delivery bitrate; receive a second request from a secondend user system for a content object; choose a second algorithm from theplurality of algorithms for optimizing a second delivery bitrate of thecontent object to the second end user system, based at least in part oninformation characterizing the second end user system; optimize thesecond delivery bitrate using the second algorithm; and deliver at leastpart of the content object to the second end user system at the seconddelivery bitrate.
 18. The content origination system that suppliescontent over the Internet to the end user system where the bitrate tosupply the content object to the end user system is variable as recitedin claim 17, wherein the content origination system is private,providing content only from a single content originator for delivery tothe end user system.
 19. The content origination system that suppliescontent over the Internet to the end user system where the bitrate tosupply the content object to the end user system is variable as recitedin claim 17, wherein the processor is distributed through a plurality ofservers across the content origination system.
 20. The contentorigination system that supplies content over the Internet to the enduser system where the bitrate to supply the content object to the enduser system is variable as recited in claim 17, wherein the firstalgorithm is also chosen based, at least in part, on informationindicating a characteristic of an access network that couples the firstend user system to the Internet and/or a characteristic of the contentorigination system.
 21. The content origination system that suppliescontent over the Internet to the end user system where the bitrate tosupply the content object to the end user system is variable as recitedin claim 17, wherein the content object is available encoded in aplurality of different bitrates, and the first delivery bitrate and thesecond delivery bitrate are each one of the plurality of bitrates, andwherein the first delivery bitrate is different than the second deliverybitrate.